package com.atguigu.bigdata.scala.chapter02;

import java.lang.reflect.Field;

public class Scala02_Var_3_Java {
    public static void main(String[] args) throws Exception {
        // 不可变字符串：String
        // 可变字符串：StringBuilder, StringBuffer

        // String如何体现不可变？
        String s = " a b ";
        //s = s.trim(); // 去掉字符串的首尾空格
        // java的字符串类没有任何一个方法可以改变自身的内容，字符串的操作都是返回新的字符串
        //System.out.println("!"+s+"!");

        // 所谓的不可变，字符串的取值不可变呀。
        //s = " a b "; // !a b!

        // String是不可变字符串强调的是引用不可变，内容其实可以变的，但是String类没有任何一个方法实现这样的功能
        // 如果非要想改，可以通过反射的方式进行修改
        Field f = String.class.getDeclaredField("value");
        f.setAccessible(true);
        char[] cs = (char[])f.get(s);
        cs[2] = 'd';

        System.out.println(s);
    }
}
